/*
 * PyKineticSystem.cpp
 *
 *  Created on: 13 Mar 2012
 *      Author: allan
 */

#include "PyKineticSystem.h"

// GeoReact includes
#include <GeoReact.h>

// Boost includes
#include <boost/python.hpp>
using namespace boost::python;

void export_KineticSystem()
{
	class_<KineticSystem, bases<EquilibriumSystem>>("KineticSystem")
		.def(init<>())
		.def(init<const KineticSystem&>())
		.def(init<const Multiphase&, const ReactionSystem&, const ReactionSystem&>())
		
		.add_property("num_kinetic_reactions",
			make_function(&KineticSystem::GetNumKineticSpecies))
		
		.add_property("num_kinetic_species",
			make_function(&KineticSystem::GetNumKineticSpecies))
		
		.add_property("kinetic_reactions",
			make_function(&KineticSystem::GetKineticReactions,
				return_internal_reference<>()))
		
		.add_property("kinetic_species",
			make_function(&KineticSystem::GetKineticSpecies,
				return_internal_reference<>()))
		
		.add_property("idx_kinetic_species",
			make_function(&KineticSystem::GetIndicesKineticSpecies,
				return_internal_reference<>()))
		
		.add_property("stochiometric_matrix_Ve",
			make_function(&KineticSystem::GetStoichiometricMatrixVe,
				return_internal_reference<>()))
		
		.add_property("stochiometric_matrix_Vk",
			make_function(&KineticSystem::GetStoichiometricMatrixVk,
				return_internal_reference<>()))
		
		.add_property("elemental_composition_matrix_Wk",
			make_function(&KineticSystem::GetElementalCompositionMatrixWk,
				return_internal_reference<>()));
}
